import java.io.*;

public class copyToRedisImpl {
    public static void main(String[] args) {
        //这是需要获取的文件夹路径
//        String path = "E:\\a\\aa";
        String path = ToConfigure.PATH;
        getFile(path,0);
    }

    public void run(){
        String path = ToConfigure.PATH;
        getFile(path,0);
    };

    /*
     * 函数名：getFile
     * 作用：使用递归，输出指定文件夹内的所有文件
     * 参数：path：文件夹路径   deep：表示文件的层次深度，控制前置空格的个数
     * 前置空格缩进，显示文件层次结构
     */
    private static void getFile(String path,int deep){
        // 获得指定文件对象
        File file = new File(path);
        // 获得该文件夹内的所有文件
        File[] array = file.listFiles();
        String FilePath = "";
        int index = 0;
        int beginIndex = 0;
        int endIndex = 0;
        int lastIndex = 0;


        for(int i=0;i<array.length;i++)
        {
            if(array[i].isFile())//如果是文件
            {
                for (int j = 0; j < deep; j++)//输出前置空格
                    System.out.print(" ");
                //以“#”和“@”为标记截取文件名的标注
                FilePath = array[i].getName();
                index = FilePath.indexOf("#");
                beginIndex = FilePath.indexOf("@")+1;
                endIndex = FilePath.lastIndexOf("@");
                lastIndex = endIndex+1;

                //以“#”为标注截取文件名的前缀为Redis对应的数据库
                String DB = FilePath.substring(0,index);
                int db = Integer.parseInt(DB);

                //截取存取类型
                String type = FilePath.substring(beginIndex,endIndex);
                //截取key名
                String key = FilePath.substring(lastIndex).replace(".txt","");
                //获取文件内容为value；
                String spath = path+"\\"+FilePath;
                String value = txt2String(spath);

                //引用copyToRedis方法  把本地的文件复制到Redis
                CopysRedisUtil.copyToRedis(key,db,type,value);
                System.out.println("chenggongle ");
            }
            else if(array[i].isDirectory())//如果是文件夹
            {
                //再进入文件夹
                for (int j = 0; j < deep; j++)//输出前置空格
                    System.out.print(" ");
                System.out.println( array[i].getName());
                //System.out.println(array[i].getPath());
                //文件夹需要调用递归 ，深度+1
                getFile(array[i].getPath(),deep+1);
            }
        }
    }

    /**
     * 获取本地文件内容
     * @param path
     * @return
     */
    public static String txt2String(String path){
        File file = new File(path);
        StringBuilder result = new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            while((s = br.readLine())!=null){//使用readLine方法，一次读一行
                result.append(System.lineSeparator()+s);
            }
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result.toString();
    }
}
